Approximating floating-point operations to verify numerical programs∗

نویسندگان

  • Mohammed Said BELAID
  • Michel RUEHER
چکیده

The verification of programs performing floating-point computations is a key issue in the development of critical software. Reasoning on floatingpoint computations is a tricky task that requires dedicated tools: floatingpoint arithmetic is not correctly handled by solvers over the reals. Several methods have been developed in order to verify programs working with floating-point numbers. Some of them misinterpret the floatingpoint numbers as fixed point numbers [2], which is far from being safe. Others try to ensure the absence of runtime errors by over-approximating floating-point computations [3]. The late method is safe, but unfortunately rejects many valid programs. We rely on constraint programming techniques to generate test cases [5] or to verify the conformity of a program with its specification [6]. Constraint programming offers many benefits like the capability to deduce information from partially instantiated problems or to exhibit (counter)examples. Floating-point constraint solvers are available [4] but have some difficulties to handle large pieces of software. Part of these limitations roots in the poorness of floating-point arithmetic. That is why we introduce here a new method to solve constraints over the floating-point numbers which takes advantage of solvers over the reals. The basic idea is to build safe but tight approximations over the reals of the floatingpoint operations. To ensure the tightness of the approximations, each floating-point operation is approximated according to its rounding mode. For example, assume that x and y are positive normalized floating-point numbers, then the floating-point addition x⊕ y with a rounding mode set to −∞, is bounded by α× (x+ y) < x⊕ y ≤ x+ y where α = 1 1 + 2−p+1 and p is the size of the significant. Approximations for special cases have also been refined, e.g., for the addition with a rounding mode set to zero, or for the multiplication by a constant. Thanks to these approximations, a problem over the floating-point numbers is translated into a set of constraints over the reals. This set of ∗This work was partially supported by the ANR-07-SESUR-003 project CAVERN.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Developing Tools for Floating-point Debugging

Floating-point arithmetic exhibits subtle behavior and the growing majority of users of numerical software are not experts in roundoff error analysis. Even for experts, locating the source of floating-point exceptions and numerical instabilities in real world programs can be difficult. Further, many of the hardware features required or suggested by the IEEE Standard 754 which aid in the debuggi...

متن کامل

Software Model Checking the Precision of Floating-Point Programs

Software model checking has recently been successful in discovering bugs in production software. Most tools have targeted heap related programming mistakes and controlheavy programs. However, real-time and embedded controllers implemented in software are susceptible to computational numeric instabilities. In this work, we target numerical programs implemented using the IEEE 754 floating-point s...

متن کامل

Refining Abstract Interpretation-based Approximations with Constraint Solvers

Programs with floating-point computations are tricky to develop because floating-point arithmetic differs from real arithmetic and has many counterintuitive properties. A classical approach to verify such programs consists in estimating the precision of floating-point computations with respect to the same sequence of operations in an idealized semantics of real numbers. Tools like Fluctuat—base...

متن کامل

An Error Estimation Model for Fixed-Point Number Representations

Recently, we need to display multimedia contents on relatively low-powered devices such as mobile phones and PDA’s. To support the multimedia capability on these devices, we fundamentally need efficient way of performing various mathematical operations. Although most devices use floating-point number representation formats such as IEEE754, recent application programs often use fixed-point numbe...

متن کامل

Utilisation de solveurs de contraintes pour réduire les approximations produites par interprétation abstraite

Programs with floating-point computations are tricky to develop because floating-point arithmetic differs from real arithmetic and has many counterintuitive properties. A classical approach to verify such programs consists in estimating the precision of floatingpoint computations with respect to the same sequence of operations in an idealized semantics of real numbers. Tools like Fluctuat—based...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2010